home *** CD-ROM | disk | FTP | other *** search
/ Shareware Grab Bag / Shareware Grab Bag.iso / 005 / finfunc.bas (.txt) < prev    next >
Encoding:
GW-BASIC  |  1985-09-14  |  17.5 KB  |  467 lines

  1. 5  REM FINANCE  VERSION 1.0  MARCH 4, 1982
  2. 10  COLOR 7:CLS:KEY OFF:SCREEN 0,0,0:WIDTH "SCRN:",80
  3. 20  ON ERROR GOTO 5950
  4. 25  PRINT "      * *  F I N A N C I A L   F U N C T I O N S  * *           (Version 1.0)": PRINT :PRINT
  5. 30  PRINT "SELECT ONE OF THE FOLLOWING FINANCIAL FUNCTIONS:"
  6. 40  PRINT
  7. 50  PRINT "     1 -- AMORTIZATION SCHEDULE"
  8. 60   PRINT "     2 -- DAYS BETWEEN DATES"
  9. 70  PRINT "     3 -- PRESENT VALUE OF A FUTURE SUM"
  10. 80  PRINT "     4 -- FUTURE VALUE OF A PRESENT SUM"
  11. 90  PRINT "     5 -- SIMPLE INTEREST FOR DAYS"
  12. 100  PRINT "     6 -- INTEREST RATE - COMPOUND INTEREST"
  13. 110  PRINT "     7 -- NOMINAL & EFFECTIVE INTEREST RATES
  14. 120  PRINT "     8 -- INTEREST RATE - INSTALLMENT LOAN"
  15. 130  PRINT "     9 -- PRESENT VALUE OF A SERIES OF PAYMENTS"
  16. 135  PRINT "    10 -- FUTURE VALUE OF REGULAR DEPOSITS
  17. 138  PRINT "    11 -- REGULAR DEPOSITS FOR FUTURE VALUE
  18. 140  PRINT "    12 -- INTERNAL RATE OF RETURN
  19. 146  PRINT "    13 -- BOND - PRESENT VALUE
  20. 147  PRINT "    14 -- BOND - YIELD TO MATURITY
  21. 149  PRINT "    15 -- EXIT FROM PROGRAM
  22. 151  PRINT:INPUT "          SELECT OPTION, THEN PRESS `ENTER' ==> ";FI
  23. 160  IF FI<1 OR FI > 15 THEN RUN
  24. 170  ON FI GOTO 720,1670,190,550,390,1030,4220,1310,2220,4630,4820,4380,5590,5750,180
  25. 180  END
  26. 181  STOP
  27. 189  REM -----------------------------------------------------------------
  28. 190  F=0:R=0:M=0:N=0
  29. 195  CLS: PRINT "      FUNCTION 3 -- PRESENT VALUE OF A FUTURE SUM ": PRINT: PRINT
  30. 200  PRINT:PRINT "This routine calculates the Present Value of a Future Sum, discounting"
  31. 210  PRINT "it for a given Interest Rate, compounded as instructed.":PRINT
  32. 230  INPUT "     FUTURE SUM  (IN DOLLARS)   ";F
  33. 240  INPUT "     ANNUAL INTEREST RATE  (%)  ";R
  34. 250  INPUT "     # OF PERIODS IN ONE YEAR   ";M
  35. 260  INPUT "     # PERIODS TO BE CALCULATED ";N
  36. 270  I=R/M:I=I/100
  37. 280  T=1+I:A=T
  38. 290  IF N=1 GOTO 310
  39. 300  FOR X=1 TO (N-1):S=A*T:A=S:NEXT X
  40. 310  P=F/A: PRINT: PRINT
  41. 320  PRINT " A Future Sum of $";F;" for ";N;" Periods, where there are "
  42. 330  PRINT M;"Periods per Year at";R;"% Annual Interest Rate, is worth "
  43. 350  PRINT:PRINT "     $";P;" in Today's Dollars"
  44. 353  PRINT: PRINT:
  45. 355  PRINT "WHAT DO YOU WANT TO DO: "
  46. 358  PRINT "     1 -- RETURN TO MAIN MENU"
  47. 360  PRINT "     2 -- RERUN CURRENT FUNCTION": PRINT
  48. 363  INPUT "          SELECT OPTION ==> ";IA
  49. 366  IF IA = 2 THEN GOTO 190
  50. 369  IF IA <>1 THEN GOTO 363
  51. 370  RUN
  52. 380  END
  53. 389  REM -----------------------------------------------------------------
  54. 390  P=0:D=0:R=0
  55. 395  CLS: PRINT "      FUNCTION 5 -- SIMPLE INTEREST FOR DAYS  ": PRINT: PRINT
  56. 400  PRINT "This routine calculates Simple Interest on dollars held in deposit"
  57. 420  PRINT "for a specified number of days, given a specific interest rate.":PRINT
  58. 430  INPUT "     AMOUNT OF DEPOSIT (IN DOLLARS) ";P
  59. 440  INPUT "     NUMBER OF DAYS ON DEPOSIT      ";D
  60. 450  INPUT "     INTEREST RATE (PERCENT)        ";R
  61. 460  PRINT:PRINT:PRINT "For a starting Principal of $";P;"at a ";
  62. 470  PRINT "Rate of";R;"% for ";D;"days"
  63. 480  PRINT:PRINT "     the Amount of Interest = $";
  64. 490  I=R/100/365*D*P
  65. 500  IF I>327.68 GOTO 520
  66. 510  I=INT(I*100+0.5)/100
  67. 520  PRINT USING "###,###.##";I;:PRINT "   or   $";:PRINT USING "#,###.##";I/D;:PRINT" per day":PRINT:PRINT:PRINT
  68. 523  PRINT "WHAT DO YOU WANT TO DO: ": PRINT
  69. 525  PRINT "     1 -- RETURN TO MAIN MENU"
  70. 528  PRINT "     2 -- RERUN CURRENT FUNCTION": PRINT
  71. 530  INPUT "          SELECT OPTION ==> ";IA
  72. 533  IF IA = 2 THEN GOTO 390
  73. 536  IF IA <>1 THEN GOTO 530
  74. 539  RUN
  75. 540  END
  76. 549  REM -----------------------------------------------------------------
  77. 550  CLS:P=0:R=0:M=0:N=0
  78. 551  PRINT "     FUNCTION 4 -- FUTURE VALUE OF A PRESENT SUM ": PRINT: PRINT
  79. 552  PRINT"This function computes the Future Value of a Present Sum, given the"
  80. 553  PRINT "Annual Interest Rate, and the number of Periods to Maturity."
  81. 560  PRINT:INPUT "     PRESENT SUM (IN DOLLARS) ";P
  82. 570  INPUT "     ANNUAL INTEREST RATE (%) ";R
  83. 580  INPUT "     # OF PERIODS IN ONE YEAR ";M
  84. 590  INPUT "     # OF PERIODS TO MATURITY ";N
  85. 600  I=R/M:I=I/100:T=I+1:A=T
  86. 610  IF N=1 THEN GOTO 630
  87. 620  FOR K=1 TO (N-1):S=A*T:A=S:NEXT K
  88. 630  F=P*A
  89. 633  PRINT: PRINT
  90. 640  PRINT "For a Present Sum of $";P;"at an Annual Interest Rate of";R;"%  "
  91. 650  PRINT "for ";N;"Periods, where there are ";M;"Periods per Year:"
  92. 670  PRINT:PRINT "     The Future Value is $";F
  93. 680  PRINT "     The Increase is $";F-P;", or";(F/P)*100-100;"%"
  94. 683  PRINT: PRINT:
  95. 685  PRINT "WHAT DO YOU WANT TO DO: "
  96. 688  PRINT "     1 -- RETURN TO MAIN MENU"
  97. 690  PRINT "     2 -- RERUN CURRENT FUNCTION"
  98. 693  INPUT "          SELECT OPTION ==> ";IA
  99. 695  IF IA = 2 THEN GOTO 550
  100. 698  IF IA <>1 THEN GOTO 693
  101. 700  RUN
  102. 710  END
  103. 719  REM -----------------------------------------------------------------
  104. 720  DEFDBL I,T:C=0:P=0:L=0:R=0:M=0:CLS:AY=0:AT=0:YR=0
  105. 725  PRINT "     FUNCTION 1 -- AMORTIZATION SCHEDULE ": PRINT
  106. 727  PRINT"This function computes the Principal and Interest for a series of "
  107. 728  PRINT"payments over a given period at a specified Interest Rate.  If the"
  108. 730  PRINT"amount of the payment is not known, it will be calculated.":PRINT
  109. 735  INPUT "      PRINCIPAL  (DOLLARS AND CENTS)  " ;P
  110. 740  INPUT "      NUMBER OF PERIODS  (IN MONTHS)  " ;L
  111. 750  INPUT "      ANNUAL INTEREST RATE (PERCENT)  ";R
  112. 760  INPUT "      PAYMENT(IF KNOWN), THEN `ENTER' ";M
  113. 770  I=R/1200
  114. 780  T=1-1/(1+I)^L:K=P
  115. 790  IF M<>0 THEN GOTO 810
  116. 800  M=P*I/T
  117. 810  GOSUB 990
  118. 815  AY=0
  119. 820  FOR Z=1 TO L
  120. 830  IF C<12 GOTO 880
  121. 835  YR=YR+1
  122. 840  PRINT:PRINT "Year of Loan: ";YR;
  123. 845  PRINT "    $";K;" for ";L;"Months at";R;"%"
  124. 850  AT = AY +AT
  125. 853   PRINT"        Total Interest Paid during Year  ==> $";:PRINT USING "#,###,###.##";AY
  126. 855  AY = 0: PRINT
  127. 857  PRINT"SELECT OPTION:"
  128. 858  INPUT "     1 -- RETURN TO MAIN MENU   2 -- RERUN FUNCTION   3 -- CONTINUE   ==> ";CH
  129. 865  IF CH=1 THEN 10
  130. 866  IF CH=2 THEN 720
  131. 867  IF CH <> 3 THEN 858
  132. 870  C=0:GOSUB 990
  133. 880  A=P*I
  134. 890  A=INT(A*100+0.5)/100
  135. 900  M=INT(M*100+0.5)/100
  136. 910  B=M-A:P=P-B
  137. 920  B=INT(B*100+0.5)/100
  138. 930  P=INT(P*100+0.5)/100
  139. 935  AY = AY + A
  140. 940  PRINT USING "####    ";Z;:PRINT USING "###,###.##";P;M;B;A
  141. 950  IF  P<=0  THEN  955
  142. 953  C=C+1:NEXT Z
  143. 955  PRINT:PRINT "Year of Loan: ";YR+1;
  144. 956  PRINT "    $";K;" for ";L;"Months at";R;"%"
  145. 958   PRINT "        Total Interest Paid during Year ==> $";:PRINT USING "#,###,###.##";AY: AT=AY+AT
  146. 962   PRINT "        Total Interest Paid during Loan ==> $";:PRINT USING "#,###,###.##";AT
  147. 964  PRINT:
  148. 965  PRINT"SELECT OPTION:"
  149. 968  PRINT "     1 -- RETURN TO MAIN MENU";
  150. 970  PRINT "   2 -- RERUN CURRENT FUNCTION";"   ==> ";:INPUT IA
  151. 975  IF IA = 2 THEN GOTO 720
  152. 978  IF IA <>1 THEN GOTO 965
  153. 980  RUN
  154. 985  END
  155. 990  CLS: PRINT "     FUNCTION 1 -- AMORTIZATION SCHEDULE ": PRINT
  156. 1000  PRINT "PAYMENT  REMAINING   MONTHLY  PRINCIPAL INTEREST"
  157. 1010  PRINT "NUMBER   PRINCIPAL   PAYMENT   PAYMENT   PAYMENT
  158. 1020  RETURN
  159. 1029  REM -----------------------------------------------------------------
  160. 1030  CLS:PRINT "     FUNCTION 6 -- INTEREST RATE - COMPOUND INTEREST": PRINT: PRINT
  161. 1033  F=0: PRINT"This routine computes the annual interest rate for a specified Future Value,"
  162. 1034  PRINT"given the Present Value, the total period of time, and the number of periods." : PRINT: PRINT
  163. 1040  INPUT "     THE FUTURE VALUE (DOLLARS) ";FV
  164. 1050  IF F=4 THEN 1130
  165. 1060  INPUT "     THE PRESENT VALUE (DOLLARS)";PV
  166. 1070  IF F=3 THEN 1130
  167. 1080  INPUT "     NUMBER OF PERIODS PER YEAR ";PY
  168. 1090  IF F=5 THEN 1130
  169. 1100  PRINT "TOTAL LENGTH OF TIME FOR WHICH INTEREST IS TO BE FIGURED"
  170. 1120  INPUT "     USE THE FORMAT (YY,MM,DD)  ";Y,M,D
  171. 1130  PD=Y*PY+M*PY/12+D*PY/365
  172. 1140  I=((FV/PV)^(1/PD)-1)*100*PY
  173. 1150  A$="###.##":F=0
  174. 1155  CLS: PRINT "     FUNCTION 6 -- INTEREST RATE - COMPOUND INTEREST ":  PRINT
  175. 1160  PRINT: PRINT:PRINT "For a Future Sum of $";FV;"with a Present Value of $";PV;" with"
  176. 1170  PRINT PY;"Periods per Year, for ";Y;"Years,";M;"Months and";D;"Days"
  177. 1180  PRINT:PRINT "      The Annual Interest Rate is ";
  178. 1190  PRINT USING A$;I;:PRINT " %"
  179. 1200  PRINT:PRINT:PRINT "WHAT DO YOU WANT TO DO:"
  180. 1205  PRINT
  181. 1208  PRINT "     1 -- RETURN TO MAIN MENU"
  182. 1210  PRINT "     2 -- RERUN ENTIRE FUNCTION"
  183. 1215  PRINT "     3 -- CHANGE PRESENT VALUE"
  184. 1220  PRINT "     4 -- CHANGE FUTURE VALUE"
  185. 1230  PRINT "     5 -- CHANGE PERIODS PER YEAR
  186. 1240  PRINT "     6 -- CHANGE TIME RANGE
  187. 1270  PRINT:INPUT "          SELECT OPTION ==> ";F
  188. 1280  IF F<1 OR F>6 THEN 1160
  189. 1290  F=INT(F):ON F GOTO 10,1030,1060,1040,1080,1100
  190. 1300  GOTO 1200
  191. 1305  END
  192. 1309  REM -----------------------------------------------------------------
  193. 1310  CLEAR:F=0:CLS:DEFDBL I:A$="##.## %"
  194. 1315  PRINT "     FUNCTION 8 -- INTEREST RATE - INSTALLMENT LOAN": PRINT
  195. 1318  ON ERROR GOTO 5950
  196. 1320  PRINT"This routine computes the Interest Rate for an Installment Loan, given"
  197. 1321  PRINT"the loan duration, the number of payments per year, and the Payment Amount.
  198. 1325  PRINT
  199. 1330  INPUT "     PRESENT VALUE (DOLLARS)  "; PV
  200. 1340  IF F=3 GOTO 1420
  201. 1350  INPUT "     NUMBER OF TERMS PER YEAR ";NY
  202. 1360  IF F=5 GOTO 1420
  203. 1370  INPUT "     NUMBER OF PERIODS IN LOAN";N
  204. 1380  IF F=4 GOTO 1420
  205. 1390  INPUT "     AMOUNT OF EACH PAYMENT   ";P
  206. 1400  IF F=6 GOTO 1420
  207. 1410  CLS:PRINT:PRINT ". . . COMPUTER WORKING.  BE WITH YOU IN A FEW SECONDS . . ."
  208. 1420  I=0.008
  209. 1430  I1=P/PV*((1+I)^N-1)/(1+I)^N
  210. 1440  IF ABS(I-I1)<9.99E-07 THEN 1470
  211. 1450  I=I1
  212. 1460  GOTO 1430
  213. 1470  I=I1*NY*100
  214. 1480  CLS:PRINT "     FUNCTION 8 -- INTEREST RATE - INSTALLMENT LOAN ": PRINT: PRINT
  215. 1490  PRINT "For a Loan with a Present Value of $";PV;" and "
  216. 1500  PRINT N;"Payments of $";P;", where there are";
  217. 1510  PRINT NY;"Payments per year"
  218. 1520  PRINT:PRINT "     the Annual Interest Rate is ";
  219. 1530  PRINT USING A$;I
  220. 1540  F=0:PRINT
  221. 1550  PRINT:PRINT "WHAT DO YOU WANT TO DO:"
  222. 1555  PRINT
  223. 1560  PRINT "     1 -- RETURN TO MAIN MENU"
  224. 1570  PRINT "     2 -- RERUN ENTIRE FUNCTION"
  225. 1580  PRINT "     3 -- CHANGE LOAN VALUE"
  226. 1590  PRINT "     4 -- CHANGE NUMBER OF INTEREST PERIODS"
  227. 1600  PRINT "     5 -- CHANGE PERIODS PER YEAR
  228. 1610  PRINT "     6 -- CHANGE PAYMENT AMOUNT
  229. 1620  PRINT:INPUT "          SELECT OPTION ==> ";F
  230. 1630  IF F<1 OR F>6 THEN 1620
  231. 1640  F=INT(F):ON F GOTO 10,1310,1330,1370,1350,1390
  232. 1650  GOTO 1550
  233. 1660  END
  234. 1669  REM -----------------------------------------------------------------
  235. 1670  CLS: PRINT "     FUNCTION 2 -- DAYS BETWEEN DATES": PRINT: PRINT
  236. 1675  CH=0: PRINT"This routine computes the Total Number of Days between two dates.":PRINT: PRINT
  237. 1680  PRINT "USING THE FORMAT  (MM,DD,YYYY):
  238. 1690  INPUT "     ENTER THE EARLIEST DATE ";M,D,Y:GOSUB 1870
  239. 1700  N=M:F=D:Z=Y:E=T
  240. 1710  IF CH=1 GOTO 1740
  241. 1720  INPUT "     ENTER THE LATEST DATE   ";M,D,Y:GOSUB 1870
  242. 1730  P=M:G=D:W=Y:L=T
  243. 1740  IF E>L THEN PRINT:PRINT "ERROR: CHECK THE DATES AND TRY AGAIN":GOTO 1780
  244. 1750  O=L-E
  245. 1760  PRINT:PRINT "The Total Number of Days between ";N;"/";F;"/";Z;
  246. 1770  PRINT " and  ";P;"/";G;"/";W;"is"
  247. 1775  PRINT:PRINT "    ";O;" Days "
  248. 1780  CH=0:PRINT:PRINT:PRINT "WHAT DO YOU WISH TO DO:"
  249. 1790  PRINT "     1 -- RETURN TO MAIN MENU"
  250. 1800  PRINT "     2 -- RERUN CURRENT FUNCTION": PRINT
  251. 1830  INPUT "          SELECT OPTION ==> ";IA
  252. 1840  IF IA = 2 THEN GOTO 1670
  253. 1850  IF IA <>1 THEN GOTO 1830
  254. 1860  RUN
  255. 1865  END
  256. 1870  YY=Y-1:T=365*YY+FIX(YY/4)-FIX(YY/100)+FIX(YY/400)
  257. 1880  CD=30*(M-1)+FIX((M-1)/3)+D
  258. 1890  IF M=2 OR M=9 OR M>10 THEN CD=CD+1:GOTO 1910
  259. 1900  IF M>2 AND M<8 AND M<>6 THEN CD=CD-1
  260. 1910  IF M<3 OR Y<>4*FIX(Y/4) THEN 1930
  261. 1920  IF Y=400*FIX(Y/400) OR Y<>100*FIX(Y/100) THEN CD=CD+1
  262. 1930  T=T+CD:RETURN
  263. 2219  REM -----------------------------------------------------------------
  264. 2220  CLS:PRINT "     FUNCTION 9 -- PRESENT VALUE OF A SERIES OF PAYMENTS":PRINT:PRINT
  265. 2222  F=0
  266. 2225  PRINT:PRINT "This program determines the Present Value of a series of payments."
  267. 2230  PRINT "It is normally used to determine the amount remaining on a loan, "
  268. 2240  PRINT "given the amount of the regular payment, the number of remaining"
  269. 2250  PRINT "payments, the number of payments per year, and the interest rate."
  270. 2260  PRINT
  271. 2270  INPUT "     AMOUNT OF REGULAR PAYMENT ";PT
  272. 2280  IF F=3 GOTO 2340
  273. 2290  INPUT "     # OF REMAINING PAYMENTS   ";NP
  274. 2300  IF F=4 GOTO 2340
  275. 2310  INPUT "     # OF PAYMENTS PER YEAR    ";PY
  276. 2320  IF F=5 GOTO 2340
  277. 2330  INPUT "     THE ANNUAL INTEREST RATE  ";IR
  278. 2340  I=IR/100
  279. 2344  CLS:PRINT "     FUNCTION 9 -- PRESENT VALUE OF A SERIES OF PAYMENTS": PRINT: PRINT
  280. 2347  T1=1+(I/PY):T1=T1^NP:T1=1/T1:T1=1-T1
  281. 2350  PR=PT*PY*T1/I
  282. 2360  PRINT "For ";NP;" Payments of $";PT;",with ";PY; "Payments per Year, "
  283. 2370  PRINT "at an Annual Interest Rate of ";IR;"%";" the Original Principal"
  284. 2380  PRINT "(or Value of the Remaining Payments) is"
  285. 2390  PRINT:PRINT "     $";:PRINT USING "#,###,###.##";PR
  286. 2400  PRINT:PRINT "WHAT DO YOU WANT TO DO:"
  287. 2405  PRINT
  288. 2410  PRINT "     1 -- RETURN TO MAIN MENU"
  289. 2420  PRINT "     2 -- RERUN ENTIRE FUNCTION"
  290. 2430  PRINT "     3 -- CHANGE PAYMENT AMOUNT"
  291. 2440  PRINT "     4 -- CHANGE NUMBER OF PAYMENTS "
  292. 2450  PRINT "     5 -- CHANGE PAYMENTS PER YEAR
  293. 2460  PRINT "     6 -- CHANGE ANNUAL INTEREST RATE"
  294. 2470  PRINT:INPUT "          SELECT OPTION ==> ";F
  295. 2480  IF F<1 OR F>6 THEN 2470
  296. 2490  F=INT(F):ON F GOTO 10,2220,2270,2290,2310,2330
  297. 2495  GOTO 2400
  298. 2500  END
  299. 4219  REM -----------------------------------------------------------------
  300. 4220  CLEAR
  301. 4235  CLS: PRINT "     FUNCTION 7 -- NOMINAL AND EFFECTIVE INTEREST RATES":PRINT:PRINT
  302. 4240  PRINT "This program computes the Nominal and Effective Interest Rates when"
  303. 4245  PRINT"given the Future Value, Present Value, number of periods between the"
  304. 4260  PRINT "two, and the number of compounding periods per year.":PRINT
  305. 4280  INPUT "     FUTURE VALUE (DOLLARS)    ";FV
  306. 4290  INPUT "     PRESENT VALUE (DOLLARS)   ";PV
  307. 4300  INPUT "     TOTAL NUMBER OF PERIODS   ";NP
  308. 4310  INPUT "     NUMBER OF PERIODS PER YEAR";PY
  309. 4320  NR=(PY*((FV/PV)^(1/NP))-PY)*100
  310. 4330  ER=((FV/PV)^(PY/NP)-1)*100
  311. 4340  PRINT:PRINT "     The Nominal Rate is";NR;" %
  312. 4345  PRINT "     The Effective Rate is";ER;" %
  313. 4350  PRINT: PRINT:
  314. 4355  PRINT "WHAT DO YOU WANT TO DO: ": PRINT
  315. 4358  PRINT "     1 -- RETURN TO MAIN MENU"
  316. 4360  PRINT "     2 -- RERUN CURRENT FUNCTION": PRINT
  317. 4363  INPUT "          SELECT OPTION ==> ";IA
  318. 4367  IF IA = 2 THEN GOTO 4230
  319. 4370  IF IA <>1 THEN GOTO 4363
  320. 4373  RUN
  321. 4379  REM -----------------------------------------------------------------
  322. 4380  CLS: PRINT "     FUNCTION 12 -- INTERNAL RATE OF RETURN": PRINT: PRINT
  323. 4390  CLEAR
  324. 4400  PRINT "This function computes the Internal Rate of Return on an Investment,"
  325. 4410  PRINT "based on the Periodic Earnings of that Investment, and discounted for"
  326. 4420  PRINT "for the Present Value of the Expected Sales Price.": PRINT
  327. 4440  INPUT "     PURCHASE PRICE (INVESTMENT) ";PV
  328. 4450  INPUT "     THE EXPECTED SALE PRICE     ";FV
  329. 4455  INPUT "     THE TOTAL NUMBER OF PERIODS ";N
  330. 4460  INPUT "     NUMBER OF PERIODS PER YEAR  ";PY: PRINT
  331. 4480  DIM EP(N)
  332. 4490  FOR X=1 TO N:PRINT "     EARNINGS FOR PERIOD #";X;:INPUT EP(X):NEXT X
  333. 4500  PRINT: PRINT
  334. 4505  PRINT"   . . . COMPUTER WORKING.  BE WITH YOU IN A FEW SECONDS . . .
  335. 4510  IR=0.15/PY:I1=0.25
  336. 4520  PF=FV/(1+IR)^N
  337. 4530  TE=0
  338. 4540  FOR X=1 TO N
  339. 4550  PE=EP(X)/(1+IR)^X
  340. 4560  TE=TE+PE
  341. 4570  NEXT X
  342. 4580  I1=IR*(PF+TE)/PV
  343. 4590  IF ABS(IR-I1)<9.99E-07 THEN IR=IR*PY*100:GOTO 4603
  344. 4600  IR=I1:GOTO 4520
  345. 4603  CLS: PRINT "     FUNCTION 12 -- INTERNAL RATE OF RETURN": PRINT: PRINT
  346. 4608  PRINT "For an Investment of $";PV;", an Expected Sales Price of $";FV
  347. 4610  PRINT"and ";N;"periods, where there are ";PY;"periods per year:"
  348. 4613  PRINT:PRINT "     The Rate of Return is ";IR;"%"
  349. 4614  PRINT: PRINT:
  350. 4616  PRINT "WHAT DO YOU WANT TO DO: ": PRINT
  351. 4618  PRINT "     1 -- RETURN TO MAIN MENU"
  352. 4620  PRINT "     2 -- RERUN CURRENT FUNCTION": PRINT
  353. 4622  INPUT "          SELECT OPTION ==> ";IA
  354. 4624  IF IA = 2 THEN GOTO 4380
  355. 4625  IF IA <>1 THEN GOTO 4622
  356. 4627  RUN
  357. 4628  END
  358. 4629  REM -----------------------------------------------------------------
  359. 4630  CLS: PRINT "     FUNCTION 10 -- FUTURE VALUE OF REGULAR DEPOSITS": PRINT: PRINT
  360. 4633  CLEAR:PRINT "This function computes the Future Value of a Series of Regular Deposits,"
  361. 4650  PRINT "where each deposit is identical, and interest is compounded with the same "
  362. 4670  PRINT "frequency that the deposits are made.  This is known as an Annuity Due;"
  363. 4680  PRINT "that is, payments are made in advance of the interest being paid, such as
  364. 4700  PRINT "savings accounts or insurance policies.
  365. 4705  PRINT
  366. 4710  INPUT "     AMOUNT OF REGULAR DEPOSIT   ";RD
  367. 4720  INPUT "     NUMBER OF DEPOSITS PER YEAR ";PY
  368. 4730  INPUT "     THE TOTAL NUMBER OF MONTHS  ";M
  369. 4750  Y = M/12
  370. 4760  INPUT "     NOMINAL ANNUAL INTEREST RATE";IR
  371. 4770  I=IR/PY/100
  372. 4780  T=(1+I)^(PY*Y):T=T-1:T=T/I:FV=RD*T
  373. 4790  PRINT:PRINT "     The Future Value is $";:PRINT USING "#,###,###.##";FV
  374. 4793  PRINT: PRINT:
  375. 4795  PRINT "WHAT DO YOU WANT TO DO: ": PRINT
  376. 4798  PRINT "     1 -- RETURN TO MAIN MENU"
  377. 4800  PRINT "     2 -- RERUN CURRENT FUNCTION": PRINT
  378. 4803  INPUT "          SELECT OPTION ==> ";IA
  379. 4804  IF IA = 2 THEN GOTO 4630
  380. 4805  IF IA <>1 THEN GOTO 4803
  381. 4806  RUN
  382. 4809  END
  383. 4819  REM -----------------------------------------------------------------
  384. 4820  CLS: PRINT"     FUNCTION 11 -- REGULAR DEPOSITS FOR FUTURE VALUE":PRINT:PRINT
  385. 4823  PRINT "This program computes the Amount of Regular Deposits needed to produce a"
  386. 4840  PRINT "particular Future Value.  It is an example of an Annuity Due.":PRINT
  387. 4850  INPUT "     FUTURE VALUE (IN DOLLARS)   ";FV
  388. 4860  INPUT "     NUMBER OF DEPOSITS PER YEAR ";PY
  389. 4870  INPUT "     THE TOTAL NUMBER OF MONTHS  ";M
  390. 4890  Y = M/12
  391. 4900  INPUT "     NOMINAL ANNUAL INTEREST RATE";IR
  392. 4910  I=IR/PY/100
  393. 4920  T=(1+I)^(PY*Y):T=T-1:T=I/T:RD=FV*T
  394. 4930  PRINT:PRINT "     The Amount of the Regular Deposit is $";:PRINT USING "#,###,###.##";RD
  395. 4933  PRINT: PRINT:
  396. 4935  PRINT "WHAT DO YOU WANT TO DO: ": PRINT
  397. 4938  PRINT "     1 -- RETURN TO MAIN MENU"
  398. 4940  PRINT "     2 -- RERUN CURRENT FUNCTION": PRINT
  399. 4943  INPUT "          SELECT OPTION ==> ";IA
  400. 4944  IF IA = 2 THEN GOTO 4820
  401. 4945  IF IA <>1 THEN GOTO 4943
  402. 4946  RUN
  403. 4948  END
  404. 5589  REM -----------------------------------------------------------------
  405. 5590  CLS:PRINT "     FUNCTION 13 -- BOND - PRESENT VALUE": PRINT: PRINT
  406. 5591  ON ERROR GOTO 5950
  407. 5593  CLEAR:PRINT "This program determines the Present Value of a Coupon Bond at a specified"
  408. 5610  PRINT "Rate of Interest, given specific Financial Information on the Bond.":PRINT
  409. 5640  INPUT "     DESIRED RATE OF INTEREST (PERCENT)";IR
  410. 5650  INPUT "     FACE (REDEMPTION) AMOUNT OF BOND  ";AM
  411. 5660  INPUT "     NUMBER OF PAYMENT PERIODS PER YEAR";PY
  412. 5670  INPUT "     NUMBER OF PERIODS TO MATURITY     ";PN
  413. 5680  INPUT "     THE PERIODIC PAYMENT (IN DOLLARS) ";PP
  414. 5690  PRINT:PRINT
  415. 5700  IR=IR/PY/100:PV=AM/(1+IR)^PN
  416. 5710  T=(1+IR)^(-PN):T=1-T:T=T/IR:T=T*PP
  417. 5720  PV=PV+T
  418. 5723  PRINT "     The Present Value is $";:PRINT USING"###,###.##";PV
  419. 5730  PRINT: PRINT:
  420. 5733  PRINT "WHAT DO YOU WANT TO DO: ": PRINT
  421. 5735  PRINT "     1 -- RETURN TO MAIN MENU"
  422. 5738  PRINT "     2 -- RERUN CURRENT FUNCTION": PRINT
  423. 5740  INPUT "          SELECT OPTION ==> ";IA
  424. 5742  IF IA = 2 THEN GOTO 5590
  425. 5745  IF IA <>1 THEN GOTO 5740
  426. 5746  RUN
  427. 5748  END
  428. 5749  REM -----------------------------------------------------------------
  429. 5750  CLS:CLEAR
  430. 5755  PRINT "     FUNCTION 14 -- BOND - YIELD TO MATURITY": PRINT: PRINT
  431. 5760  ON ERROR GOTO 5950
  432. 5770  PRINT "This program determines the Yield to Maturity on a Bond, given the"
  433. 5780  PRINT "Current Purchase Price.  This is the true Rate of Return on a Bond."
  434. 5790  PRINT
  435. 5800  INPUT "      PURCHASE PRICE OF THE BOND    ";PV
  436. 5810  INPUT "      THE REDEMPTION (FACE) VALUE   ";FV
  437. 5820  INPUT "      ANNUAL QUOTED INTEREST RATE   ";IR
  438. 5830  INPUT "      # OF COUPON PAYMENTS PER YEAR ";PY
  439. 5840  INPUT "      # OF PAYMENT PERIODS REMAINING";N
  440. 5850  INPUT "      AMOUNT OF THE COUPON PAYMENT  ";CP
  441. 5860  PRINT:PRINT ". . . COMPUTER WORKING.  BE WITH YOU IN A FEW SECONDS . . .
  442. 5870  IR=0.08/PY
  443. 5880  PF=FV/(1+IR)^N
  444. 5890  T=(1+IR)^(-N):T=1-T:T=T/IR*CP
  445. 5900  I1=IR*(PF+T)/PV
  446. 5910  IF ABS(IR-I1)<9.99E-07 THEN IR=IR*PY*100:GOTO 5930
  447. 5920  IR=I1:GOTO 5880
  448. 5930  PRINT:PRINT "     The Yield to Maturity is";:PRINT USING A$;IR;" %"
  449. 5933  PRINT: PRINT:
  450. 5935  PRINT "WHAT DO YOU WANT TO DO: ": PRINT
  451. 5937  PRINT "     1 -- RETURN TO MAIN MENU"
  452. 5939  PRINT "     2 -- RERUN CURRENT FUNCTION": PRINT
  453. 5940  INPUT "          SELECT OPTION ==> ";IA
  454. 5942  IF IA = 2 THEN GOTO 5750
  455. 5945  IF IA <>1 THEN GOTO 5940
  456. 5946  RUN
  457. 5948  END
  458. 5949  REM -----------------------------------------------------------------
  459. 5950  REM          ERROR HANDLING ROUTINE
  460. 5955  PRINT
  461. 5960  IF ERR/2+1=11 THEN PRINT "A `DIVIDE BY ZERO' ERROR HAS OCCURRED."ELSE 6030
  462. 5970  PRINT:PRINT "     THIS USUALLY MEANS THAT A VALUE REQUIRED BY THE FUNCTION WAS NOT ENTERED PROPERLY"
  463. 5980  PRINT "     OR THAT AN INVALID ZERO CONDITION WAS COMPUTED."
  464. 5990  PRINT:PRINT "          PUSH `ENTER' TO RETURN TO MAIN MENU"; INPUT A$
  465. 6010  RUN
  466. 6030  PRINT "ERROR";ERR;"HAS OCCURR
  467.